import cv2
import numpy as np

if __name__ == '__main__':
    #1.图片输入
    image_np = cv2.imread('jianpan.jpg')

    #2. 灰度化
    image_np_gray = cv2.cvtColor(image_np, cv2.COLOR_BGR2GRAY)

    #3. 二值化
    _, image_np_thresh = cv2.threshold(
        image_np_gray,
        120,
        255,
        cv2.THRESH_BINARY
    )

    blur = cv2.GaussianBlur(image_np_thresh, (11, 11), 1)

    # 如果Canny内置的高斯不理想，可以在此位置手动添加一次高斯滤波
    # Canny算法：4.高斯滤波 +5.计算梯度与方向 + 6.非极大值抑制 +7. 双阈值筛选
    edges_image = cv2.Canny(
        blur,   #要处理的图像
        0, # 低阈值
        20, # 高阈值
    )

    # 8。 图片输出
    # 创建窗口时指定为“可调整大小”
    cv2.namedWindow('keyboard', cv2.WINDOW_NORMAL)  # 关键：允许窗口大小调整
    cv2.resizeWindow('keyboard', 700, 800)
    cv2.imshow('keyboard', edges_image)
    cv2.imwrite('keboard.jpg', edges_image)
    cv2.waitKey(0)
